RS40B - uživatelský manuál


2.6.6 - Práce s datovými typy

V této části se podíváme blíže na práci s datovými typy. Jazyk VAL3 obsahuje celou řadu instrukcí pro práci s datovými typy. U numerických proměnných se jedná zejmána o instrukce pro výpočet různých matematických operací. Pro datový typ string jsou k dispozici instukce pro práci s řetězcem, jako je nahrazení, vyhledání či smazání znaků. Každý typ má tedy své vlastní instrukce, se kterýma může pracovat, a které mají požadované návratové hodnoty.

Instrukce pro matematické operace

Funkce sinus

Syntaxe
num sin(<num nAngle>)
Funkce

Vrací sinus z úhlu nAngle, který je zadán ve stupních.

Příklad
putln(sin(90))//zobrazí 1

Funkce kosinus

Syntaxe
num cos(<num nAngle>)
Funkce

Vrací kosinus z úhlu nAngle, který je zadán ve stupních.

Příklad
putln(cos(90))//zobrazí 0

Funkce tangens

Syntaxe
num tan(<num nAngle>)
Funkce

Vrací tangens z úhlu nAngle, který je zadán ve stupních.

Příklad
putln(tan(45))//zobrazí 1

Funkce arkus sinus

Syntaxe
num asin(<num nValue>)
Funkce

Vrací hodnotu úhlu v rozmezí -90° až +90°. Hodnota nValue musí být v intervalu < -1 ; 1 >, v opačném případě je zobrazeno chybové hlášení.

Příklad
putln(asin(1))//zobrazí 90

Funkce arkus kosinus

Syntaxe
num acos(<num nValue>)
Funkce

Vrací hodnotu úhlu v rozmezí -90° až +90°. Hodnota nValue musí být v intervalu < -1 ; 1 >, v opačném případě je zobrazeno chybové hlášení.

Příklad
putln(acos(0))//zobrazí 90

Funkce arkus tangens

Syntaxe
num atan(<num nValue>)
Funkce

Vrací hodnotu úhlu v rozmezí -90° až +90°.

Příklad
putln(atan(1))//zobrazí 45

Absolutní hodnota

Syntaxe
num abs(<num nValue>)
Funkce

Vrací kladnou (tedy absolutní) hodnotu proměnné nValue.

Příklad
putln(abs(-4))//zobrazí 4

Odmocnina

Syntaxe
num sqrt(<num nValue>)
Funkce

Vrací druhou odmocninu z čísla nValue. Pokud je proměnná záporná, vrací chybu.

Příklad
putln(sqrt(25))//zobrazí 5

Exponenciální funkce

Syntaxe
num exp(<num nValue>)
Funkce

Vrací mocninu eulerova čísla e. Tedy výsledek enValue.

Příklad
putln(exp(2))//zobrazí 7.389

Mocnina

Syntaxe
num power(<num nX>, <num nY>)
Funkce

Vrací nY-tou mocninu čísla nX, tedy nXnY.

Příklad
putln(power(2, 3))//zobrazí 8

Přirozený logaritmus

Syntaxe
num ln(<num nValue>)
Funkce

Vrací přirozený logaritmus čísla nValue. Pokud je nValue menší nebo rovno nule, zobrazí se chyba.

Příklad
putln(ln(2.7182818))//zobrazí 1

Logaritmus

Syntaxe
num log(<num nValue>)
Funkce

Vrací logaritmus o základu 10 čísla nValue. Pokud je nValue menší nebo rovno nule, zobrazí se chyba.

Příklad
putln(log(10))//zobrazí 1

Zaokrouhlení

Syntaxe
num round(<num nValue>)
Funkce

Vrací číslo zaokrouhlené na nejbližší celočíselnou hodnotu.

Příklad
putln(round(2.54))//zobrazí 3
putln(round(2.32))//zobrazí 2

Zaokrouhlení nahoru

Syntaxe
num roundUp(<num nValue>)
Funkce

Vrací číslo zaokrouhlené nahoru na nejbližší celočíselnou hodnotu.

Příklad
putln(roundUp(2.04))//zobrazí 3
putln(roundUp(2.58))//zobrazí 3

Zaokrouhlení dolů

Syntaxe
num roundDown(<num nValue>)
Funkce

Vrací číslo zaokrouhlené dolů na nejbližší celočíselnou hodnotu.

Příklad
putln(roundDown(2.04))//zobrazí 2
putln(roundDown(2.58))//zobrazí 2

Minimum

Syntaxe
num min(<num nX>, <num nY>)
Funkce

Porovná proměnné nX a nY a vrátí měnší z nich.

Příklad
putln(min(-5, 0))//zobrazí -5

Maximum

Syntaxe
num max(<num nX>, <num nY>)
Funkce

Porovná proměnné nX a nY a vrátí větší z nich.

Příklad
putln(max(-5, 0))//zobrazí 0

Omezení

Syntaxe
num limit(<num nValue>, <num nX>, <num nY>)
Funkce

Zjistí zda je proměnná nValue v intervalu <nX, nY>. Pokud ano, vrací nValue, jinak vrací omezenou hodnotu.

Příklad
putln(limit(5, -10, 10))//zobrazí 5
putln(limit(15, -10, 10))//zobrazí 10
putln(limit(-15, -10, 10))//zobrazí -10

Výběr proměnné

Syntaxe
num sel(<bool bCondition>, <num nValue1>, <num nValue2>)
Funkce

Pokud je vyhodnocena proměnná bCondition jako pravda, vrací funkce hodnotu proměnné nValue1, jinak vrací nValue2. Dá se tedy říci, že se jedná o zjednodušenou verzi podmínky if.

Příklad
putln(sel(bPodminka, x, y))
//funkce je stejná jako:
if(bPodminka)
  putln(x)
else
  putln(y)

Instrukce pro práci s řetězcem

Převod na řetězec

Syntaxe
string toString(<string sFormat>, <num nValue>)
Funkce

Tato instrukce převede číselnou proměnnou nValue na řetězec string. Řetězec sFormat určuje styl zobrazení čísla. Formát je zadáván ve formě "size.precision", kde size je celkový počet míst před desetinnou čárkou a precision určuje počet desetinných míst.

Příklad
nPi = 3.14159265 putln(toString(".4", nPi))//zobrazí 3.1416
putln(toString("8", nPi))//zobrazí "       3"
putln(toString("8.4", nPi))//zobrazí "  3.1416"
putln(toString("8.4", 2.70001))//zobrazí 2.7
putln(toString("", nPi))//zobrazí 3
putln(toString("1.2", 1234.1234))//zobrazí 1234.12

Převod na číslo

Syntaxe
string toNum(<string sString>, <num& nValue>, <bool& bReport>)
Funkce

Přečtě první číslo z proměnné sString typu string a uloží jej do proměnné nValue. Zbylá část řetězce je vrácena návratovou hodnotou. Pokud řetězec sString neobrahuje žádné číslo nebo se před číslem vyskytují nenumerické znaky, je nastavena proměnná bReport na false, jinak je bReport true.

Příklad
num nVal
num bOk
01:putln(toNum("10 20 30", nVal, bOk))//zobrazí "20 30"
02:putln(toNum("a10 20 30", nVal, bOk))//zobrazí "a10 20 30"
03:putln(toNum("10 2a0 30", nVal, bOk))//zobrazí "2a0 30"

Na řádku číslo jedna uloží instrukce toNum první čílo, tedy 10, do proměnné nVal a nastaví bOk na true a nakonec vrací původní řetězec ořezaný o číslo 10, tedy "20 30", který bude zobrazen.
Instrukce toNum na řádku 2 pouze nastaví bOk na false a vrátí celý řetězec protože začíná písmenem a nelze tedy převést na číslo.
Řádek číslo 3 nastaví nVal na hodnotu 10 protože znak je až za ním, tedy bOk je rovno true a návratová hodnota je "2a0 30".


Znak

Syntaxe
string chr(<num nValue>)
Funkce

Podle čísla nValue vrací znak, který odpovídá tomuto číslu v tabulce unicode. Tato tabulka obsahuje 128 znaků jejichž seznam můžete najít na www.unicode.com. Prvních 32 znaků je netisknutelných, tudíž nejdou zobrazit, protože převážně symbolizují stisk některých speciálních kláves.

Příklad
putln(chr(97))//zobrazí "a"

Číslo znaku

Syntaxe
num asc(<string sText>, <num nPosition>)
Funkce

Uloží číslo znaku sText do proměnné nPosition. Vrací -1 pokud je proměnná nPosition záporná nebo větší než je rozsah unicode tabulky.

Příklad
putln(chr(97))//zobrazí "a"

Čtení z leva

Syntaxe
string left(<string sText>, <num nSize>)
Funkce

Vrací řetězec o délce nSize, který je získán od pozice 0 v proměnné sText. Je-li nSize větší než délka řetězce, vrací celý řetězec. Pokud je nSize záporné je generována chyba.

Příklad
putln(left("Nejaky text", 6))//zobrazí "Nejaky"

Čtení z prava

Syntaxe
string right(<string sText>, <num nSize>)
Funkce

Rozdíl oproti instrukci left je, že tato instrukce vrací řetězec z prava. Tedy vrací posledních nSize znaků z řetězce sText.

putln(right("Nejaky text", 4))//zobrazí "text"

Čtení z pozice

Syntaxe
string mid(<string sText>, <num nSize>, <num nPozition>)
Funkce

Vrací nSize znaků z řetězce sText a od pozice nPozition. Pokud je nSize větší než velikost sText, vrací všechny znaky od pozice nPozition. Je-li nSize nebo nPozition záporné, generuje chybu.

putln(mid("Nejaky slozitejsi text", 10, 7))//zobrazí "slozitejsi"

Vložení

Syntaxe
string insert(<string sText>, <string sInsertion>, <num nPozition>)
Funkce

Vračí řetězec sText, do kterého byl vložen řetězec sInsertion na pozici nPozition. Pokud je nPozition větší než délka sText, je řetězec sInsertion vložen až na konec. Délka řetězce nesmí přesáhnout 128B, v opačném případě bude řetězec ořezán. Je-li nPozition záporné, generuje chybu.

putln(insert("Nejaky text", " slozitejsi", 6))//zobrazí "Nejaky slozitejsi text"

Mazání

Syntaxe
string delete(<string sText>, <num nSize>, <num nPozition>)
Funkce

Vráti řetězec sText, ze kterého bylo smazáno nSize znaků z pozice nPozition. Pokud je nSize nebo nPozition záporené, generuje chybu.

putln(delete("Nejaky slozitejsi text", 11, 6))//zobrazí "Nejaky text"

Nahrazení

Syntaxe
string replace(<string sText>, <string sReplacement>, <num nSize>, <num nPozition>)
Funkce

Nahradí nSize znaků na pozici nPozition řetězcem sReplacement v řetězci sText. Pokud je nPozition větší než délka sText, vrátí nezměněné sText. Pokud je nSize nebo nPozition záporné, generuje chybu.

putln(replace("Nejaky jednoduchy text", "slozitejsi", 10, 7))//zobrazí "Nejaky slozitejsi text"

Hledání

Syntaxe
num find(<string sText1>, <string sText2>)
Funkce

Hledá řetězec sText2 v řetězci sText1 a pokud jej najde vrací jeho pozici. Pokud sText1 neobsahuje sText2 vrací -1.

putln(replace("Nejaky slozitejsi text", "slozitejsi"))//zobrazí 7

Délka řetězce

Syntaxe
num len(<string sText>)
Funkce

Vrací počet znaků, které obsahuje řetězec sText.

putln(len("Nejaky slozitejsi text"))//zobrazí 22